# python中的序列
# var1 = 'Hello World'
# var2 = "Python \t Runoob"
# var3 = '''sdfsd
# sdfsd'''
#
# print(var1[1])  # 字符串从左到右第2个字符
# print(var1[-1])  # 字符串从右到左第1个字符
# print(var1[-2])  # 字符串从右到左第2个字符串

# name = "abcdefg"
# print(name[2:6:2])  # ce
# print(name[2:6:1])  # cdef
# print(name[2:5])  # cde
# print(name[:5])  # abcde
# print(name[1:])  # bcdefg
# print(name[:])  # abcdefg
# print(name[::2])  # aceg
# print(name[:-1])  # abcdef
# print(name[-4:-1])  # def
# print(name[::-1])  # gfedcba  # 字符串翻转

# 字符串中的函数

# 字符串中子串查询

# str = "hello world hello2 world1 hello2 world"
#
# # print(str.find('hello2'))  # 找到后，返回子串首字母的下标
# # print(str.find('hello2', 15, 40))  # 设置查找子串的区间
# #
# # print(str.index('hello2'))
# # print(str.index('hello2', 15, 40))
# # print(str.index('hello3'))  #找不到会报错
#
# print(str.find('hello2'))  # 从前往后找
#
# print(str.rfind('hello2'))  # 从后往前找
# print(str.rindex('hello2'))  # 从后往前找


# 字符串大小写转换
# str = "helLO World"
# print(str.upper())  # 转大写字母
# print(str.lower())  # 转小写字母
# print(str.swapcase())  # 大小写交换
# print(str.capitalize())  # 第一个字母大写，其余小写
# print(str.title())  # 每个单词首字母大写

# 字符串分割
# str = "I am a student"
# print(str.split(' '))  # 按照空格分割，将切割后的子串放在列表中
# print(str.split(' ', 2))  # 最大切割位置数
# print(str.rsplit(' '))
#
# print(str.partition(' '))  # 找到第一个子串，将其分割为3部分，返回一个元祖
# print(str.rpartition(' '))

# 字符串合并和替换
# str1 = "-"
# str2 = "hello python"
# str3 = "- -"
# print(str1.replace('-', str2))  # 将str1中的所有字符替换为str2的字符串
# print(str3.replace('-', str2, 1))  # 最大替换字符数
# print(str1.join(str2))  # 在str2的每个字符串中间插入str1


# 列表 list
# list1 = ['abc', 12345, True, 3.14, [1, 2]]
# print(list1[4])  # 查找列表
# print(list1[:3])  # 截取列表
# list1[0] = 'abcde'  # 修改列表
# print(list1)

# 列表查找操作
# list1 = ['abc', 12345, 'abcd', 3.14, [1, 2], 'abc']
# print(list1.index('abc'))  # 返回第一个匹配的元素下标
# print(list1.count('abc'))  # 返回该元素出现的次数
# print(len(list1))  # 返回列表的元素个数

# 列表插入操作
# list1 = ['abc', 12345, 'abcd', 3.14, [1, 2], 'abc']
# list1.append(66)  # 列表结尾插入数据(整体插入)
# print(list1)
#
# # list1.extend([1,2,3])
# list1.extend('hello')  # 如果插入的是一个序列，那么就会把序列中的每个元素都逐一添加进去（分开插入）
# print(list1)
#
# list1.insert(2, [100, 101])  # 指定位置插入元素
# print(list1)

# # 列表删除操作
# list1 = ['abc', 12345, 'abcd', 3.14, [1, 2], 'abc']
# # list1.pop()  # 删除最后一个位置的元素
# # print(list1)
# # list1.pop(2)  # 删除指定位置元素
# # print(list1)
#
# # list1.remove('abc')
# # print(list1)
#
# del list1[1]
# print(list1)  # 删除指定下标的元素

# 列表排序操作
# list1 = ['abc', 12345, 'abcd', 3.14, [1, 2], 'abce']
# print(list1[::-1])  # 列表切片操作实现列表元素翻转
# list1.reverse() # 使用函数将列表逆序
# print(list1)

# list1 = [55, 12, 36, 1, 98, 27, 165, 100]
# # list1.sort()
# # print(list1)
# # list1.sort(reverse=True)
# # print(list1)

# # 元组 tuple
# tuple1 = ('abc',)  # 元组中只有一个元素时必须这样写，防止有歧义识别为其它数据类型
# tuple2 = (1234, 'abcd', 3.14, [1, 2])
#
# # print(tuple2[2])
# # print(tuple2[0:2])
# print(tuple2.index(1234))
# print(tuple2.count('abcd'))
# print(len(tuple2))

# 序列中的通用操作：
# 数学运算符
# 加法
# str1 = 'abc' + 'efg'
# list1 = ['123', 456]
# list1 += [100, '456']
# tuple1 = (123,) + ('abc',)
# print(str1)
# print(list1)
# print(tuple1)

# 乘法
# str1 = 'abcdefg'
# print(str1 * 50)
# str1 *= 50
# print(str1)

# # 比较
# list1 = ['abc', 1, 2]
# list2 = ['abc', 2, 3]
# print(list1 > list2)

# # 元素查找
# a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
# print(f'10在序列a中：{10 in a}')
# print(f'10不在序列a中：{10 not in a}')

# 序列内置函数
# 只有sum必须是数值类型的列表，其它函数对列表数据类型无限制
a = [1, 2, 300, 44, 5, 16, 7, 81]
print(f'列表元素总数为：{len(a)}')
print(f'列表元素最大值为：{max(a)}')
print(f'列表元素最小值为：{min(a)}')
print(f'列表元素和为：{sum(a)}')

b = 'hello world'
print(f'字符串b中ascii码最大的字符为：{max(b)}')
